/**
 * @author EmiBen 
 * @version 1
 * @since 15/02/2015
 */
package PersistenciaDAOs;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import SQLQrys.QrysPunto;
import VOs.VOPunto;
import exceptions.PersistenciaException;
import logica.ConexionBD;


public class DAOPunto {

	private ConexionBD DBC;
	
	public DAOPunto(){
		
	}
	
	public void insert(VOPunto punto) throws PersistenciaException{
		String ins=null;
		
		try{
			
			QrysPunto cons=new QrysPunto();
			ins=cons.insertPunto();
			//creo preparedStatement, seteo parametros y ejecuto la consulta.
			PreparedStatement pstmt1;
			
			DBC=new ConexionBD();
			
			pstmt1 = DBC.getConnection().prepareStatement(ins);
			
			pstmt1.setInt(1,punto.getId());
			pstmt1.setInt(2,punto.getCoordX());
			pstmt1.setInt(3,punto.getCoordY());
			
			pstmt1.executeUpdate();
			//cierro preparedStatement.
			pstmt1.close();
		} catch (SQLException e) {
			e.printStackTrace();
			throw new PersistenciaException("Se ha producido un error al intentar guardar el punto");
		}finally{
			DBC.desconectar();
		}	
	}
	
	public VOPunto select(int id) throws PersistenciaException{
		String sel=null;
		
		VOPunto p = new VOPunto();
		
		try{

		QrysPunto cons=new QrysPunto();
		sel = cons.getPunto();
		//creo preparedStatement, seteo parametros y ejecuto la consulta.
		PreparedStatement pstmt1;

		DBC=new ConexionBD();

		pstmt1 = DBC.getConnection().prepareStatement(sel);
		pstmt1.setInt(1, id);
				
		ResultSet rs = pstmt1.executeQuery();
		while(rs.next()){
			int ide = rs.getInt("id");
			int x = rs.getInt("CoordX");
			int y = rs.getInt("CoordY");
			p.setId(ide);
			p.setCoordX(x);
			p.setCoordY(y);

		}
		
		rs.close();
		pstmt1.close();
		} catch (SQLException e) {
		e.printStackTrace();
		throw new PersistenciaException("Se ha producido un error al intentar guardar el punto");
		}finally{
			DBC.desconectar();
			return p;
			}	
		}
	
	
	public int last() throws PersistenciaException{
		String sel=null;
		
		int id = 0;
		try{

		QrysPunto cons=new QrysPunto();
		sel = cons.lastPunto();
		//creo preparedStatement, seteo parametros y ejecuto la consulta.
		PreparedStatement pstmt1;

		DBC=new ConexionBD();

		pstmt1 = DBC.getConnection().prepareStatement(sel);
				
		ResultSet rs = pstmt1.executeQuery();
		if(rs.next()){
			
			id = rs.getInt(1);
		}
		
		rs.close();
		pstmt1.close();
		} catch (SQLException e) {
		e.printStackTrace();
		throw new PersistenciaException("Se ha producido un error al intentar guardar el punto");
		}finally{
			DBC.desconectar();
			return id;
			}	
		}
}
